Elastic Cloud-Driven Task Execution

ABSTRACT

A method, an apparatus and an article of manufacture for cloud-driven application execution. The method includes determining a plurality of attributes of a failed application, wherein the plurality of attributes comprises at least one policy context attribute and at least one context attribute, correlating each of the plurality of attributes to at least one alternative asset, wherein the at least one alternative asset is a part of an environment on which the failed application can be executed, using the plurality of attributes correlated to the at least one alternative asset to identify an alternative asset set of alternative assets, wherein the alternative asset set is capable of enabling an alternative environment on which to execute the failed application, and provisioning the alternative assets in the alternative asset set from at least one cloud network to create the alternative environment on which the failed application is executed.

FIELD OF THE INVENTION

Embodiments of the invention generally relate to information technology,and, more particularly, to application execution.

BACKGROUND

Challenges exist in the handling of unrecognized tasks such as unknownfile types, commands, situations, etc. Many existing approaches arelimited to traditional environments, often under specific compliancerequirements. The emergence of compute cloud based services facilitatesnew functionality opportunities given the separation of duties (usageversus provider management of compliant delivery and support). However,a need exists within a cloud computing architecture to effectuate asystem or enterprise policy to remote clients.

SUMMARY

In one aspect of the present invention, techniques for elasticcloud-driven task execution are provided. An exemplarycomputer-implemented method for cloud-driven application execution caninclude steps of determining a plurality of attributes of a failedapplication, wherein the plurality of attributes comprises at least onepolicy context attribute and at least one context attribute, correlatingeach of the plurality of attributes to at least one alternative asset,wherein the at least one alternative asset is a part of an environmenton which the failed application can be executed, using the plurality ofattributes correlated to the at least one alternative asset to identifyan alternative asset set of at least one alternative asset, wherein thealternative asset set is capable of enabling an alternative environmenton which to execute the failed application, and provisioning the atleast one alternative assets in the alternative asset set from at leastone cloud network to create the alternative environment on which thefailed application is executed.

Another aspect of the invention or elements thereof can be implementedin the form of an article of manufacture tangibly embodying computerreadable instructions which, when implemented, cause a computer to carryout a plurality of method steps, as described herein. Furthermore,another aspect of the invention or elements thereof can be implementedin the form of an apparatus including a memory and at least oneprocessor that is coupled to the memory and operative to perform notedmethod steps.

Yet further, another aspect of the invention or elements thereof can beto implemented in the form of means for carrying out the method stepsdescribed herein, or elements thereof; the means can include (i)hardware module(s), (ii) software module(s), or (iii) a combination ofhardware and software modules; any of (i)-(iii) implement the specifictechniques set forth herein, and the software modules are stored in atangible computer-readable storage medium (or multiple such media).

These and other objects, features and advantages of the presentinvention will become apparent from the following detailed descriptionof illustrative embodiments thereof, which is to be read in connectionwith the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram illustrating system architecture, according to anembodiment of the present invention;

FIG. 2 is a diagram illustrating a workflow for policy-based elasticcloud-driven task execution, according to an embodiment of the presentinvention;

FIG. 3 is a flow diagram illustrating techniques for cloud-drivenapplication execution, according to an embodiment of the invention; and

FIG. 4 is a system diagram of an exemplary computer system on which atleast one embodiment of the invention can be implemented.

DETAILED DESCRIPTION

As described herein, an aspect of the present invention includespolicy-based elastic cloud-driven task execution. An example embodimentof the invention includes a process or agent residing within a cloudcomputing architecture enabled to effectuate a system or enterprisepolicy to any number of remote clients through the provisioning ofparticular sets of virtual machines (VMs). In the same fashion, theprocess or agent can be location-aware of the dynamic state of eachremote client and able to adjust virtual machine provisioning based onthis knowledge.

By way of illustration, an example scenario for policy driven desktopaction can include the receipt of an e-mail, or file, whose extension isunknown to the user's VM operating environment. An embodiment of theinvention can discover the appropriate application which can interpretthis file, and securely drive or assist the user to open and execute thefile within a compartmentalized environment, for example, based on theuser's policy. The policy, by way of example, can be related to, but notlimited to, security, mobility, or any appropriate relevant context.

Accordingly and as further detailed herein, aspects of the inventionaccelerate and simplify a customer experience with new extensions in thedesktop service interaction, and also increase the functional scope ofthe desktop experience.

At least one embodiment of the invention includes assisting a user (enduser for desktops or admin for servers) to create an unknown taskhandling a policy, which can be related to, but not limited to, resourcecapacity, security, mobility, license, cost, custom context, etc.Additionally, a federated registry can be built that includesapplications and services relationships as well as mappings to contexts.Matching application(s)/service(s) can be discovered which can run tasksunrecognized by the original operating system (OS) or application (app)based on a policy.

Also, an aspect of the invention includes using a rating system for opensource resources (for example, for new file extensions) and assistingwith an ordered list of selected relevant app/service matches. Further,at least one embodiment of the invention includes transparently andcompliantly driving or assisting the run, use and termination of aselected app/service within a controlled environment based on a policy(for example, start a new VM and run app).

Additionally, by way of example, an embodiment of the invention caninclude facilitating a charge depending on policy, user type, license,etc., as well as enabling usage limitations based on cost (for example,usage limited up to $5 charge). Further, the app/service used to handlethe unknown task can be subsequently rated.

As such, aspects of the invention include discovering applications andapplication execution tasks when such items are necessary to a user andunknown. Also, as described herein, an aspect of the invention includesmanaging a lifecycle of an application execution from start to end in aremote virtual machine based on policies that include the user'spreferences for performance, security, etc.

FIG. 1 is a diagram illustrating system architecture, according to anembodiment of the present invention. By way of illustration, FIG. 1depicts a policy store or database 102, a policy engine 104, aconnection brokering agent component 106 and agents 108. Additionally,FIG. 1 depicts a client device 110, a service dispatcher component 112and a service 114 (a web application, a shared server, a virtual client,a stream server, etc.).

As noted, in an example embodiment of the invention, the system includesone or more client devices which provide a user interface, a policydatabase to store the policy statements, a policy engine to match thepolicy statements against the current service request, a set of agentsto gather the situational and service request aspects of the action, oneor more service providers to deploy the service if required, aconnection brokering agent to receive the service requests and dispatchthe service and connection actions to fulfill the request, and a cloudwhich provides all the computing resources with the exception of theclient device.

As also in accordance with an example embodiment of the invention, sucha system can operate as follows. A user requests a service, for example,by clicking on an icon displayed on the client device or typing acommand into the client device. The client device relays this request tothe connection brokering agent. The connection S brokering agent relaysaspects of the request (client type, specific request, user identity,etc.) to the policy engine to resolve a way to service the request. Thepolicy engine consults the policy database (as well as optionally one ormore agents to assess the details of the situation) and determines thebest/desired match between the situation and the methods for providingthe service. Additionally, the policy engine returns the suggestedservice method, and possibly several alternatives to the connectionbrokering agent.

The connection brokering agent dispatches the service, which might, forexample, include streaming the application for the service to thedevice, launching a server or remote client to execute the service forthe client, selecting a shared server which is running the requestservice, or launching the application instance which is alreadyinstalled on the client device.

Additionally, the connection brokering agent responds to the clientdevice with the details of how to provide the user interface to theservice, which might, for example, include launching the applicationlocally and displaying the user interface from the local instance,streaming the application from a specified stream server and eitherinstalling the application locally or running locally from the stream,launching a remote presents client and attaching to the appropriateremote client, server, or shared server to display the service userinterface, or launching a web browser to a uniform resource locator(URL) which provides the requested service as a web application.

FIG. 2 is a diagram illustrating a workflow for policy-based elasticcloud-driven task execution, according to an embodiment of the presentinvention. Step 202 includes creating and/or updating a policy (forexample, contexts and tasks). Step 204 includes creating and/or updatinga rated registry (for example, a context or services). Unknown task 206is the starting point of the “solve the task” flow. In the illustrationof FIG. 2, there are multiple flows, including the set up/update of theenvironment. Step 208 includes discovering matching application(s) andservice(s). Step 210 includes using a rating system to prioritizematching application(s)/service(s). Step 212 includes driving orassisting the run, use and termination of a selected/prioritizedapplication/service match to handle the unknown task 206. Step 214includes rating the selected application/service match, and step 216includes charging. Charging can include, for instance, providing aninvoice resulting from billing the service that provided the task.

As detailed herein, choosing a desired or optimum approach fordelivering a specific function at a specific time to a specific locationand device is dependent on the context and any policies which govern theuse to meet risk and privacy guidelines.

In accordance with at least one embodiment of the invention, performinga computing or communications tasks can be dependent of many aspects ofthe context such as, for example, the user's current location andinteraction device (device performance, network connectivity, bandwidth,security, etc.), the type and location of the data items which the userneeds to manipulate (file type, file size, home location, securityrestrictions, etc.), the specific operation the user need to perform onthe data (view only—whole document or snippet, edit document, streamdocument, etc.) and the content of the document itself (steamed media,medical diagnostic image, privacy restricted information, etc.).

Achieving a desired or optimal performance and user experience for agiven interaction can also be dependent such aspects. Likewise, therecan be many delivery modes available (web app, locally installed app,virtual desktop, application virtualization, etc.), and each of thesedelivery modes has a specific set of capabilities and challenges.

An aspect of the invention includes pulling together some or all of theabove-noted aspects for a specific session and making a context-awarechoice of how best to deliver the experience given the situation.Accordingly, in an aspect of the invention, there is a deterministicaspect, given the offline mapping between tasks and potential executionenvironments for the task, as well as the runtime mapping between agiven context and the user's policies. There is also a dynamic aspect,given only few execution environments are selected based on the currentpolicies in place for each user, the ratings, etc.

Examples of contexts include current location, current quality ofbandwidth, devices, desktop, mobile, etc. Additionally, the term“context-aware” is used to describe a model of computing in which usersinteract with different mobile and stationary computers and classify acontext-aware system as one that can adapt according to its location ofuse, the collection of nearby people and objects, and according to thechanges of those objects over time.

Organized contexts can help applications to find information needed bycomparing a current context to a policy or model. By way of example, aprivacy setting may be enforced by storing sensitive context informationon the user's personal device and not sharing that information withapplications running on another device, while more public information inthe hierarchy may be stored in another location, such as public storageor a cloud device, where the information can be shared with applicationsrunning in a variety of locations.

As detailed herein, policy can include considerations of performance,security, quality of experience, optimization type (cost for user,capacity for mobile, etc.), etc. With respect to performance, forexample, with a user querying a particular file extension andsubsequently needing to execute the related application, an aspect ofthe invention includes evaluating the resource utilization on the localoperating environment and determining if additional virtualizedresources are needed in an on-demand fashion. Accordingly, thatparticular application is opened in a performance container that doesnot conflict with the resources Of the user's local environment.

With respect to security, for example, a user may need to access apotentially unsecure e-mail attachment or file and ensure that it doesnot corrupt the primary virtual or primary local operating environment.Accordingly, an aspect of the invention includes opening the file in asecure container. Container, as used herein, refers to an environment(application. VM, etc.) that is completely controlled with respect tothe assumed security level.

Also, with respect to quality of experience, for example, networklocation-awareness for a user's device can provide information on thelink state that can allow the database directory to enhance how the enduser device accesses the application that is tied to the file extension.

Another aspect of the invention includes providing extendedrelationships/mapping. In at least one embodiment of the invention, thisaspect requires a database structure (or file maps or directory ofservices) listing all known file extensions and the applications whichsupport those (at least within the context of the enterprise ororganization to which the user belongs). This might include, forexample, listing all known applications for which an enterprise ororganization has paid access. A database such as noted above may alsocontain, in an example embodiment of the invention, relevant metadataregarding the file extension and application to which it corresponds.This may include useful information for understanding a desired methodin which to provision the app to the end user device (for example, ifusing a mobile phone decision), Universal Description, Discovery, andIntegration (UDDI) for WebServices related applications, CromOS likerelated applications on metal, etc.

At least one embodiment of the invention also includes a decision daemon(or analogous process) which runs within the operating environment ofthe user's device and intelligently senses when elasticity is requiredupon query of a particular file extension and subsequent calling of thecorresponding application. With respect to elasticity, if the file to beexecuted upon is too large or involves opening an application requiringresources beyond the current limits in the policy (for example, CPU,RAM, number of applications, number of processes, etc.). the elasticityrefers to the ability to dynamically find additional resources to matchthe requirements.

In connection with execution of an example embodiment of the invention,in response to changing conditions, there can be several options foradjustment action (all of which can be chosen based on global policy).For example, capacity of an existing desktop VM can be extended byincreasing its resource share of the underlying physical server.Examples include increasing memory size, number of central processingunit (CPU) cores, or storage. This option allows for improvement in userexperience.

Another option includes starting a remote application instead of localexecution. The application executes on a remote server with the screenand keyboard and mouse events forwarded to the original desktop VM, or,directly to the end user device. Screen (raster) level composition canoccur at the end user device or at the VM.

Yet another option includes launching a dedicated virtual machine andstarting an application in this newly launched VM. Such an option allowsgrowth of capacity allocated to a desktop user by horizontal scaling, aswell as isolating the execution. Additionally, another option includesexecuting the required task using a web service and appropriatelyconverting the result to be presented in desktop environment. Yetanother option includes streaming application binary from the streamingserver and executing locally (either on end-point, or on the VM).

As described herein, an example embodiment of the invention can includea charge feature. Such an embodiment can include displaying a paymentoption for a per-use fee next to each file extension when a query ismade. The software user may look-up the file extension needing access tothe app to open it, but will be presented with a payment option to havethe app streamed for his/her use for a temporary period. Additionally,such an example embodiment can include enabling a usage limitation basedon cost (by way merely of example, “usage limited up to $5 charge”).

FIG. 3 is a now diagram illustrating techniques for cloud-drivenapplication execution, according to an embodiment of the presentinvention. Step 302 includes determining a plurality of attributes of afailed application, wherein the plurality of attributes comprises atleast one policy context attribute and at least one context attribute.Context attributes can include, for example, a user location, aninteraction device attribute, a data type, a data location, a specificoperation on data, and a document content attribute.

Step 304 includes correlating each of the plurality of attributes to atleast one alternative asset, wherein the at least one alternative assetis a part of an environment on which the failed application can beexecuted.

Step 306 includes using the plurality of attributes correlated to the atleast one alternative asset to identify an alternative asset set of atleast one alternative asset (for example, in a registry database),wherein the alternative asset set is capable of enabling an alternativeenvironment on which to execute the failed application.

Step 308 includes provisioning the at least one alternative asset in thealternative asset set from at least one cloud network to create thealternative environment on which the failed application is executed.Creating the alternative environment on which the failed application isexecuted can include, for example, streaming the application to a clientdevice, launching a server or remote client to execute the applicationfor a client, selecting a shared server execute the application, orlaunching an instance of the application which is already installed on aclient device.

The techniques depicted in FIG. 3 can also include receiving at leastone application over at least one of one or more network interfaces, anddetermining that one of the at least one application is a failedapplication that cannot be executed in a given environment.Additionally, an embodiment of the invention can further includeproviding a user interface to the application. Providing a userinterface to the application can include, for example, launching theapplication locally and displaying the user interface from a localinstance of the application, streaming the application from a specifiedstream server and installing the application locally or executing theapplication locally from the stream, launching a remote presents clientand attaching to an appropriate remote client, server, or shared serverto display the user interface, or launching a web browser to a uniformresource locator which provides the application as a web application.

The techniques depicted in FIG. 3 can also, as described herein, includeproviding a system, wherein the system includes distinct softwaremodules, each of the distinct software modules being embodied on atangible computer-readable recordable storage medium. All the modules(or any subset thereof) can be on the same medium, or each can be on adifferent medium, for example. The modules can include any or all of thecomponents shown in the figures. In an aspect of the invention, themodules include a policy engine module, a connection brokering agentmodule, a policy database module, and a service dispatcher module thatcan run, for example on a hardware processor. The method steps can thenbe carried out using the distinct software modules of the system, asdescribed above, executing on a hardware processor. Further, a computerprogram product can include a tangible computer-readable recordablestorage medium with code adapted to be executed to carry out at leastone method step described herein, including the provision of the systemwith the distinct software modules.

Additionally, the techniques depicted in FIG. 3 can be implemented via acomputer program product that can include computer useable program codethat is stored in a computer readable storage medium in a dataprocessing system, and wherein the computer useable program code wasdownloaded over a network from a remote data processing system. Also, inan aspect of the invention, the computer program product can include,but is not limited to, computer useable program code that is stored in acomputer readable storage medium in a server data processing system, andwherein the computer useable program code are downloaded over a networkto a remote data processing system for use in a computer readablestorage medium with the remote system.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in a computer readable medium havingcomputer readable program code embodied thereon.

An aspect of the invention or elements thereof can be implemented in theform of an apparatus including a memory and at least one processor thatis coupled to the memory and operative to perform exemplary methodsteps.

Additionally, an aspect of the present invention can make use ofsoftware running on a general purpose computer or workstation. Withreference to FIG. 4, such an implementation might employ, for example, aprocessor 402, a memory 404, and an input/output interface formed, forexample, by a display 406 and a keyboard 408. The term “processor” asused herein is intended to include any processing device, such as, forexample, one that includes a CPU (central processing unit) and/or otherforms of processing circuitry. Further, the term “processor” may referto more than one individual processor. The term “memory” is intended toinclude memory associated with a processor or CPU, such as, for example,RAM (random access memory), ROM (read only memory), a fixed memorydevice (for example, hard drive), a removable memory device (forexample, diskette), a flash memory and the like. In addition, the phrase“input/output interface” as used herein, is intended to include, forexample, a mechanism for inputting data to the processing unit (forexample, mouse), and a mechanism for providing results associated withthe processing unit (for example, printer). The processor 402, memory404, and input/output interface such as display 406 and keyboard 408 canbe interconnected, for example, via bus 410 as part of a data processingunit 412. Suitable interconnections, for example via bus 410, can alsobe provided to a network interface 414, such as a network card, whichcan be provided to interface with a computer network, and to a mediainterface 416, such as a diskette or CD-ROM drive, which can be providedto interface with media 418.

Accordingly, computer software including instructions or code forperforming the methodologies of the invention, as described herein, maybe stored in an associated memory devices (for example, ROM, fixed orremovable memory) and, when ready to be utilized, loaded in part or inwhole (for example, into RAM) and implemented by a CPU. Such softwarecould include, but is not limited to, firmware, resident software,microcode, and the like.

A data processing system suitable for storing and/or executing programcode will include at least one processor 402 coupled directly orindirectly to memory elements 404 through a system bus 410. The memoryelements can include local memory employed during actual implementationof the program code, bulk storage, and cache memories which providetemporary storage of at least some program code in order to reduce thenumber of times code must be retrieved from bulk storage duringimplementation.

Input/output or I/O devices (including but not limited to keyboards 408,displays 406, pointing devices, and the like) can be coupled to thesystem either directly (such as via bus 410) or through intervening 1/0controllers (omitted for clarity).

Network adapters such as network interface 414 may also be coupled tothe system to enable the data processing system to become coupled toother data processing systems or remote printers or storage devicesthrough intervening private or public networks. Modems, cable modem andEthernet cards are just a few of the currently available types ofnetwork adapters.

As used herein, including the claims, a “server” includes a physicaldata processing system (for example, system 412 as shown in FIG. 4)running a server program. It will be understood that such a physicalserver may or may not include a display and keyboard.

As noted, aspects of the present invention may take the form of acomputer program product embodied in a computer readable medium havingcomputer readable program code embodied thereon. Also, any combinationof one or more computer readable medium(s) may be utilized. The computerreadable medium may be a computer readable signal medium computerreadable storage medium. A computer readable storage medium may be, forample, but not limited to, an electronic, magnetic, optical,electromagnetic, infrared, or semiconductor system, apparatus, ordevice, or any suitable combination of the foregoing. More specificexamples (a non-exhaustive list) of the computer readable storage mediumwould include the following: an electrical connection having one or morewires, a portable computer diskette, a hard disk, a random access memory(RAM), a read-only memory (ROM), an erasable programmable read-onlymemory (EPROM or Flash memory), an optical fiber, a portable compactdisc read-only memory (CD-ROM), an optical storage device, a magneticstorage device, or any suitable combination of the foregoing. In thecontext of this document, a computer readable storage medium may be anytangible medium that can contain, or store a program for use by or inconnection with an instruction execution system, apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing an appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may he written in any combination of at least oneprogramming language, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks. Accordingly, an aspect of the inventionincludes an article of manufacture tangibly embodying computer readableinstructions which, when implemented, cause a computer to carry out aplurality of method steps as described herein.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, component, segment,or portion of code, which comprises at least one executable instructionfor implementing the specified logical function(s). It should also benoted that, in some alternative implementations, the functions noted inthe block may occur out of the order noted in the figures. For example,two blocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

It should be noted that any of the methods described herein can includean additional step of providing a system comprising distinct softwaremodules embodied on a computer readable storage medium; the modules caninclude, for example, any or all of the components detailed herein. Themethod steps can then be carried out using the distinct software modulesand/or sub-modules of the system, as described above, executing on ahardware processor 402. Further, a computer program product can includea computer-readable storage medium with code adapted to be implementedto carry out at least one method step described herein, including theprovision of the system with the distinct software modules.

In any case, it should be understood that he components illustratedherein may be implemented in various forms of hardware, software, orcombinations thereof; for example, application specific integratedcircuit(s) (ASICS), functional circuitry, an appropriately programmedgeneral purpose digital computer with associated memory, and the like.Given the teachings of the invention provided herein, one of ordinaryskill in the related art will be able to contemplate otherimplementations of the components of the invention.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a,” “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition ofanother feature, integer, step, operation, element, component, and/orgroup thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present invention has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the invention. Theembodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

At least one aspect, of the present invention may provide a beneficialeffect such as, for example, acceleration of a customer experience andan increase in the functional scope of a desktop experience.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A method for cloud-driven application execution,wherein the method comprises: determining a plurality of attributes of afailed application, wherein the plurality of attributes comprises atleast one policy context attribute and at least one context attribute;correlating each of the plurality of attributes to at least onealternative asset, wherein the at least one alternative asset is a partof an environment on which the failed application can be executed; usingthe plurality of attributes correlated to the at least one alternativeasset to identify an alternative asset set of at least one alternativeasset, wherein the alternative asset set is capable of enabling analternative environment on which to execute the failed application; andprovisioning the at least one alternative asset in the alternative assetset from at least one cloud network to create the alternativeenvironment on which the failed application is executed; wherein atleast one of the steps is carried out by a computer device.
 2. Themethod of claim 1, wherein the at least one context attribute comprisesat least one of a user location, an interaction device attribute, a datatype, a data location, a specific operation on data, and a documentcontent attribute.
 3. The method of claim 1, further comprising:receiving at least one application over at least one of one or morenetwork interfaces; and determining that one of the at least oneapplication is a failed application that cannot be executed in a givenenvironment.
 4. The method of claim 1, wherein identifying analternative asset set comprises identifying an alternative asset set ina registry database.
 5. The method of claim 1, wherein creating thealternative environment on which the failed application is executedcomprises streaming the application to a client device.
 6. The method ofclaim 1, wherein creating the alternative environment on which thefailed application is executed comprises launching a server or remoteclient to execute the application for a client.
 7. The method of claim1, wherein creating the alternative environment on which the failedapplication is executed comprises selecting a shared server execute theapplication.
 8. The method of claim 1, wherein creating the alternativeenvironment on which the failed application is executed compriseslaunching an instance of the application which is already installed on aclient device.
 9. The method of claim 1, further comprising: providing auser interface to the application.
 10. The method of claim 9, whereinproviding a user interface to the application comprises launching theapplication locally and displaying the user interface from a localinstance of the application.
 11. The method of claim 9, whereinproviding a user interface to the application comprises streaming theapplication from a specified stream server and installing theapplication locally or executing the application locally from thestream.
 12. The method of claim 9, wherein providing a user interface tothe application comprises launching a remote presents client andattaching to an appropriate remote client, server, or shared server todisplay the user interface.
 13. The method of claim 9, wherein providinga user interface to the to application comprises launching a web browserto a uniform resource locator which provides the application as a webapplication.
 14. The method of claim 1, further comprising: providing asystem, wherein the system comprises at least one distinct softwaremodule, each distinct software module being embodied on a tangiblecomputer-readable recordable storage medium, and wherein the at leastone distinct software module comprises a policy engine module, aconnection brokering agent module and a service dispatcher moduleexecuting on a hardware processor.
 15. An article of manufacturecomprising a computer readable storage medium having computer readableinstructions tangibly embodied thereon which, when implemented, cause acomputer to carry out a plurality of method steps comprising:determining a plurality of attributes of a failed application, whereinthe plurality of attributes comprises at least one policy contextattribute and at least one context attribute; correlating each of theplurality of attributes to at least one alternative asset, wherein theat least one alternative asset is a part of an environment on which thefailed application can be executed; using the plurality of attributescorrelated to the at least one alternative asset to identify analternative asset set of at least one alternative asset, wherein thealternative asset set is capable of enabling an alternative environmenton which to execute the failed application; and provisioning the atleast one alternative asset in the alternative asset set from at leastone cloud network to create the alternative environment on which thefailed application is executed.
 16. The article of manufacture of claim15, wherein the at least one context attribute comprises at least one ofa user location, an interaction device attribute, a data type, a datalocation, a specific operation on data, and a document contentattribute.
 17. The article of manufacture of claim 15, wherein thecomputer readable instructions which, when implemented, further cause acomputer to carry out a method step comprising: receiving at least oneapplication over at least one of one or more network interfaces; anddetermining that one of the at least one application is a failedapplication that cannot be executed in a given environment.
 18. Thearticle of manufacture of claim 15, wherein identifying an alternativeasset set comprises identifying an alternative asset set in a registrydatabase.
 19. The article of manufacture of claim 15, wherein thecomputer readable instructions which, when implemented, further cause acomputer to carry out a method step comprising: providing a userinterface to the application.
 20. A system for cloud-driven applicationexecution, comprising: at least one distinct software module, eachdistinct software module being embodied on a tangible computer-readablemedium; a memory; and at least one processor coupled to the memory andoperative for: determining a plurality of attributes of a failedapplication, wherein the plurality of attributes comprises at least onepolicy context attribute and at least one context attribute; correlatingeach of the plurality of attributes to at least one alternative asset,wherein the at least one alternative asset is a part of an environmenton which the failed application can be executed; using the plurality ofattributes correlated to the at least one alternative asset to identifyan alternative asset set of at least one alternative asset, wherein thealternative asset set is capable of enabling an alternative environmenton which to execute the failed application; and provisioning the atleast one alternative asset in the alternative asset set from at leastone cloud network to create the alternative environment on which thefailed application is executed.
 21. The system of claim 20, wherein theat least one context attribute comprises at least one of a userlocation, an interaction device attribute, a data type, a data location,a specific operation on data, and a document content attribute.
 22. Thesystem of claim 20, wherein the at least one processor coupled to thememory is further operative for: receiving at least one application overat least one of one or more network interfaces; and determining that oneof the at least one application is a failed application that cannot beexecuted in a given environment.
 23. The system of claim 20, wherein theat least one processor coupled to the memory operative for identifyingan alternative asset set is further operative for identifying analternative asset set in a registry database.
 24. The system of claim20, wherein the at least one processor coupled to the memory is furtheroperative for: providing a user interface to the application.